<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>Disable swapping | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="system-config.html" title="Important System Configuration">
<link rel="prev" href="setting-system-settings.html" title="Configuring system settings">
<link rel="next" href="file-descriptors.html" title="File Descriptors">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">Set up Elasticsearch</a></span>
»
<span class="breadcrumb-link"><a href="system-config.html">Important System Configuration</a></span>
»
<span class="breadcrumb-node">Disable swapping</span>
</div>
<div class="navheader">
<span class="prev">
<a href="setting-system-settings.html">« Configuring system settings</a>
</span>
<span class="next">
<a href="file-descriptors.html">File Descriptors »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="setup-configuration-memory"></a>Disable swapping<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/sysconfig/swap.asciidoc">edit</a>
</h2>
</div></div></div>
<p>Most operating systems try to use as much memory as possible for file system
caches and eagerly swap out unused application memory. This can result in parts
of the JVM heap or even its executable pages being swapped out to disk.</p>
<p>Swapping is very bad for performance, for node stability, and should be avoided
at all costs. It can cause garbage collections to last for <span class="strong strong"><strong>minutes</strong></span> instead
of milliseconds and can cause nodes to respond slowly or even to disconnect
from the cluster. In a resilient distributed system, it’s more effective to let
the operating system kill the node.</p>
<p>There are three approaches to disabling swapping. The preferred option is to
completely disable swap. If this is not an option, whether or not to prefer
minimizing swappiness versus memory locking is dependent on your environment.</p>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="disable-swap-files"></a>Disable all swap files<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/sysconfig/swap.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Usually Elasticsearch is the only service running on a box, and its memory usage
is controlled by the JVM options. There should be no need to have swap enabled.</p>
<p>On Linux systems, you can disable swap temporarily by running:</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">sudo swapoff -a</pre>
</div>
<p>This doesn’t require a restart of Elasticsearch.</p>
<p>To disable it permanently, you will need to edit the <code class="literal">/etc/fstab</code> file and
comment out any lines that contain the word <code class="literal">swap</code>.</p>
<p>On Windows, the equivalent can be achieved by disabling the paging file entirely
via <code class="literal">System Properties → Advanced → Performance → Advanced → Virtual memory</code>.</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="swappiness"></a>Configure <code class="literal">swappiness</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/sysconfig/swap.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Another option available on Linux systems is to ensure that the sysctl value
<code class="literal">vm.swappiness</code> is set to <code class="literal">1</code>. This reduces the kernel’s tendency to swap and
should not lead to swapping under normal circumstances, while still allowing the
whole system to swap in emergency conditions.</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="bootstrap-memory_lock"></a>Enable <code class="literal">bootstrap.memory_lock</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/setup/sysconfig/swap.asciidoc">edit</a>
</h3>
</div></div></div>
<p>Another option is to use
<a href="http://opengroup.org/onlinepubs/007908799/xsh/mlockall.html" class="ulink" target="_top">mlockall</a> on
Linux/Unix systems, or
<a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa366895%28v=vs.85%29.aspx" class="ulink" target="_top">VirtualLock</a>
on Windows, to try to lock the process address space into RAM, preventing any
Elasticsearch memory from being swapped out. This can be done, by adding this
line to the <code class="literal">config/elasticsearch.yml</code> file:</p>
<div class="pre_wrapper lang-yaml">
<pre class="programlisting prettyprint lang-yaml">bootstrap.memory_lock: true</pre>
</div>
<div class="warning admon">
<div class="icon"></div>
<div class="admon_content">
<p><code class="literal">mlockall</code> might cause the JVM or shell session to exit if it tries to
allocate more memory than is available!</p>
</div>
</div>
<p>After starting Elasticsearch, you can see whether this setting was applied
successfully by checking the value of <code class="literal">mlockall</code> in the output from this
request:</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">GET _nodes?filter_path=**.mlockall</pre>
</div>
<div class="console_widget" data-snippet="snippets/36.console"></div>
<p>If you see that <code class="literal">mlockall</code> is <code class="literal">false</code>, then it means that the <code class="literal">mlockall</code>
request has failed.  You will also see a line with more information in the logs
with the words <code class="literal">Unable to lock JVM Memory</code>.</p>
<p>The most probable reason, on Linux/Unix systems, is that the user running
Elasticsearch doesn’t have permission to lock memory.  This can be granted as
follows:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">.zip</code> and <code class="literal">.tar.gz</code>
</span>
</dt>
<dd>
Set <a class="xref" href="setting-system-settings.html#ulimit" title="ulimit"><code class="literal">ulimit -l unlimited</code></a> as root before starting Elasticsearch,
or set <code class="literal">memlock</code> to <code class="literal">unlimited</code> in
<a class="xref" href="setting-system-settings.html#limits.conf" title="/etc/security/limits.conf"><code class="literal">/etc/security/limits.conf</code></a>.
</dd>
<dt>
<span class="term">
RPM and Debian
</span>
</dt>
<dd>
Set <code class="literal">MAX_LOCKED_MEMORY</code> to <code class="literal">unlimited</code> in the
<a class="xref" href="setting-system-settings.html#sysconfig" title="Sysconfig file">system configuration file</a> (or see below for systems using
<code class="literal">systemd</code>).
</dd>
<dt>
<span class="term">
Systems using <code class="literal">systemd</code>
</span>
</dt>
<dd>
Set <code class="literal">LimitMEMLOCK</code> to <code class="literal">infinity</code> in the <a class="xref" href="setting-system-settings.html#systemd" title="Systemd configuration">systemd configuration</a>.
</dd>
</dl>
</div>
<p>Another possible reason why <code class="literal">mlockall</code> can fail is that
<a class="xref" href="executable-jna-tmpdir.html" title="JNA temporary directory not mounted with noexec">the JNA temporary directory (usually a sub-directory of
<code class="literal">/tmp</code>) is mounted with the <code class="literal">noexec</code> option</a>. This can be solved by specifying
a new temporary directory for JNA using the <code class="literal">ES_JAVA_OPTS</code> environment variable:</p>
<div class="pre_wrapper lang-sh">
<pre class="programlisting prettyprint lang-sh">export ES_JAVA_OPTS="$ES_JAVA_OPTS -Djna.tmpdir=&lt;path&gt;"
./bin/elasticsearch</pre>
</div>
<p>or setting this JVM flag in the jvm.options configuration file.</p>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="setting-system-settings.html">« Configuring system settings</a>
</span>
<span class="next">
<a href="file-descriptors.html">File Descriptors »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
